/* 
 * File:   Entier.h
 * Author: Gab'z
 *
 * Created on 1 mai 2012, 19:45
 */

#ifndef ENTIER_H
#define	ENTIER_H
#include "NombreSimple.h"

class Entier : public NombreSimple {
    int _x;
public:

    Entier(int x) : _x(x) {
    }

    Entier(const Entier& e) : _x(e._x) {
    }

    virtual ~Entier();

    Entier* clone() const;

    int getX() const {
        return _x;
    }

    double value() const;

    Entier& operator=(const Entier& e) {
        if (this == &e) return *this;
        _x = e._x;
        return *this;
    }
    Entier& operator+=(const Entier& e);
    Entier& operator-=(const Entier& e);
    Entier& operator*=(const Entier& e);
    Entier& operator/=(const Entier& e);
    Entier& operator%=(const Entier& e);

    //    Entier operator+() const {
    //        return Entier(*this);
    //    }
    //
    //    Entier operator-() const {
    //        Entier e(*this);
    //        e._x = -e._x;
    //        return e;
    //    }

    std::string toString() const;
};

Entier operator+(const Entier& e1, const Entier& e2);
Entier operator-(const Entier& e1, const Entier& e2);
Entier operator*(const Entier& e1, const Entier& e2);
Entier operator/(const Entier& e1, const Entier& e2);
Entier operator%(const Entier& x1, const Entier& e2);

#endif	/* ENTIER_H */